package JVM.第01篇_字节码篇;

import org.junit.Test;
/**
 * 缓存对象     包装类
 *
 * Byte         -128 - 127
 * Short        -128 - 127
 * Integer      -128 - 127
 * Long         -128 - 127
 * Floal        没有
 * Double       没有
 * Character        0-127
 * Boolcan`    truc 和 false
 */
public class B3_缓存问题 {
    public static final String a;
    public static final String b;
    public static final String aa="123";
    public static final String bb="456";
    public static  String aaa="123";
    public static  String bbb="456";
    static {
        a = "123";
        b = "456";
    }
    @Test
    public void 字符串常量池() {
        String c = "123456";
        String d = a + b;
        System.out.println((c == d)+"\t"+d);//false	123456

        String e = aa + bb;
        System.out.println((c == e)+"\t"+e);//true	123456

        String f = aaa + bbb;
        System.out.println((c == f)+"\t"+f);//false	123456
    }

    @Test
    public void StringBuilderDemo() {
        /**
         * 有一个初始化的java字符串(JDK出娘胎自带的)，
         * 在加载sun.misc.Version这个类的时候进入常量池
         */
        String str1 = new StringBuilder("j").append("ava").toString();
        String a ="j";
        String b ="ava";
        String c= a + b;
        //jdk8 是 false  因为 java 初始化就加载了  有的版本 是 true 因为 将初始化的闪了
        System.out.println(str1 == str1.intern());
        System.out.println(c == c.intern());//false  因为 之前 已经存在 java 的常量了
        String str2=new StringBuilder("jee").append("ava").toString();
        System.out.println(str2 == str2.intern());//true
    }
}
